公式パッケージのtd-agentではファイルデスクリプタ上限が設定済みだった件
こんにちは、先週末は暖かく散歩日和だったので北大内を散策してみました。
少しづつ紅葉が進んでいて、冬がやってくるなぁと実感しました。
先週末の北大大野池の様子
はじめに
td-agentをインストールする時のプラクティスとしてファイルデスクリプタ数の上限を変更しておくことが知られています。 この設定は公式のドキュメントにも書かれていて、その他の多くのウェブ上の記事でも紹介されています。
この記事は、この設定について業務の中で「ファイルデスクリプタの設定しなきゃいけないみたいだけど、今どうなってるの?調べて!」と振られて調べた時のメモです。
公式のパッケージを使う場合は起動スクリプトの中で上限が設定されている
(タイトルの出落ち感が激しいのは置いておいて)
上記の調査をしていて気づいたのですが公式で配布されているパッケージを使う場合は起動スクリプト内で上限が設定されているので、変更は不要です。
この辺はtd-agentをよく使っている方には常識なのかもしれないですが、web上では設定をしなければいけない、という記事はあっても、設定しなくていいよ、という記事がなかったので自分としては意外でした。
td-agentプロセスのファイルデスクリプタの上限を確認する方法
とはいえ、実際に設定が変わっているのか確認しないと気が済まなかったので、次の方法で確認しました。
/proc/<pid>/limits/
の Max open files
の各値が65536
になっていることがわかります。
# td-agentプロセスのpidを調べる [ec2-user@ip-172-31-22-137 ~]$ ps axu | grep td-agent td-agent 2797 0.0 2.4 226992 25100 ? Sl 09:04 0:00 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --use-v1-config --group td-agent --daemon /var/run/td-agent/td-agent.pid td-agent 2800 1.4 3.6 257196 36980 ? Sl 09:04 0:00 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --use-v1-config --group td-agent --daemon /var/run/td-agent/td-agent.pid ec2-user 2815 0.0 0.1 110468 2020 pts/0 S+ 09:04 0:00 grep --color=auto td-agent # /proc/<pid>/limits の内容を確認する ec2-user@ip-172-31-22-137 ~]$ cat /proc/2797/limits | grep "Max open files" Max open files 65536 65536 files
まとめ
今回の調査では結局設定しなくてよかった、という結論で、稼働しているサーバの設定を変更する必要などはなかったのですが、なんでも自分で調べてみるのは重要だなと改めて感じました。